perm filename ENTRO1.SAI[PIX,HPM] blob sn#442979 filedate 1979-05-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "ENTRO1"
C00006 ENDMK
C⊗;
BEGIN "ENTRO1"
REQUIRE "PIXHDR.SAI[VIS,HPM]" SOURCE_FILE;
INTEGER I,J,K,L,C,D,PICLNBY; REAL INF,INP,PA,PB;
STRING BF; INTEGER SAFE ARRAY PIC[0:10];
DEFINE L2LEN=5000;
REAL SAFE ARRAY L2[0:L2LEN];
FOR I←0 STEP 1 UNTIL L2LEN DO L2[I]←-LOG((I/L2LEN) MAX 0.00001)/LOG(2);
DO PRINT("BIT FILE:") UNTIL PFLDIM(BF←INCHWL)>0;
WHILE TRUE DO
   BEGIN
   INTEGER CH; STRING S;
   PRINT("Gain rate (ε):"); PA←REALSCAN(S←INCHWL,I); PB←1-PA;
   CH←OPNPFL(BF,PIC[0]);
   PICLNBY←PIC[LNBY];
      BEGIN
      REAL PRED;
      PRED←0.5;
	 BEGIN
	 INTEGER BPS,BPT;
	 INTEGER SAFE ARRAY BITS[0:PIC[LNWD]-1];
	  
         BPS←POINT(1,BITS[0],-1);

	 INF←0; INP←0;
	 FOR L←0 STEP 1 UNTIL PIC[PCLN]-1 DO
	    BEGIN
	    ARRYIN(CH,BITS[0],PIC[LNWD]);

	    BPT←BPS;
	    FOR J←0 STEP 1 UNTIL PICLNBY-1 DO
               BEGIN
	       IF ILDB(BPT) THEN
                  BEGIN
                  INF←INF + L2[L2LEN*PRED];
                  PRED←(PRED*PB+PA) MIN .99999;
                  END
               ELSE
                  BEGIN
                  INF←INF + L2[L2LEN*(1-PRED)];
                  PRED←(PRED*PB) MAX .00001;
                  END;
	       END;
            INP←INP+PICLNBY;
            IF (L LAND 63)=0 THEN
	    PRINT(INP," bits ",INF," crunched ",INP/INF," GAIN ",'15&'12);
	    END;
         PRINT(INP," bits ",INF," crunched ",INP/INF," GAIN ",'15&'12);
	 END;
      RELEASE(CH);
      END;
   END;

END "ENTRO1";